/*
*	Ivan Concua 12352
*	Roberto Andrino 12413
*	Algoritmos y estructuras de datos
*	StackArrayList.java
*	Clase que implementa la interfaz Stack con un ArrayList
*	Es parte del ADT de Stack
*/

import java.util.ArrayList;

public class StackArrayList<G> extends AbstractStack<G>
{
	private ArrayList<G> stack; // ArrayList de datos genericos 
	
	public StackArrayList()
	// se inicializa la pila de datos genericos
	{
		stack = new ArrayList<G>();
	}
	
	public void push(G item)
	// pre: 
    // post: Se agrega un item generico al stack
    // sera el primer item en salir por un pop si no hay otro push
	{
		stack.add(item);
    }
   
   public G pop()
   // pre: El stack no esta vacio
   // post: Se remueve y se retorna el ultimo item generico en haber entrado al stack
   {
		return stack.remove(size() - 1);
   }
   
   public G peek()
   // pre: El stack no esta vacio
   // post: Se retorna el ultimo item generico en haber entrado al stack
   {
		return stack.get(size() - 1);
   }
   
   public int size()
   // pre:
   // post: retorna la cantidad de elementos en el stack
   {
		return stack.size();
   }
}